package com.sansui.blog.service;

import com.github.pagehelper.PageInfo;
import com.sansui.blog.pojo.Blog;
import com.sansui.blog.pojo.vo.BlogInfoQuery;
import com.sansui.blog.pojo.vo.BlogQuery;

import java.util.List;
import java.util.Map;

/**
 * @name: BlogService
 * @author: Sansui
 * @Software: IDEA
 * @Blog: https://www.cnblogs.com/sansui6/
 * @date: 2022-04-2 22:30
 **/

/*
* 博客信息 service
* */
public interface BlogService {

    /**
     * 获取已发布博客数量
     * @return 已发布博客数量
     */
    Map<String, Object> countBlogInfo();

    /**
     * 获取全部博客数据
     * @return 全部博客数据
     */
    Map<String, Object> getAllBlogByPage(Integer page, Integer limit);


    /**
     * 更新博客发布状态数据
     * @return
     */
    Map<String, Object> updateStatus(Long blogId , String status);

    /**
     * 新增博客数据
     * @return
     */
    Map<String, Object> addBlog(Blog blog , String username);

    /**
     * 修改博客数据
     * @return
     */
    Map<String, Object> updateBlog(Blog blog , String username);

    /**
     * 删除博客
     * @return
     */
    Map<String, Object> deleteBlog(Long blogId);

    /**
     * 批量删除博客
     * @return
     */
    Map<String, Object> deleteBlogByIds(List<String> delList);

    /**
     * 博客查询
     * @return
     */
    Map<String, Object> blogQuery(BlogQuery blog);

    ///////////////////////////////////////

    /**
     * 使用分页插件获取博客信息
     * @param pageNum
     * @param pageSize
     * @return
     */
    PageInfo<BlogInfoQuery> queryAllByPage(Integer pageNum, Integer pageSize,Long typeId ,Long tagId,String keyword);

    Long countTNum(Long typeId , Long tagId);

    /**
     * 获取首页推荐博客信息
     * @return
     */
    List<Blog> getRecommendedBlog();

    /**
     * 根据id获取博客信息
     * @param blogId
     * @return
     */
    Blog getBlogById(Long blogId);

    /**
     * 根据博客id 获取 markdown转换html后的博客信息
     * @param blogId
     * @return
     */
    Blog getAndConvert(Long blogId);

    /**
     * 根据id获取文章对应标签信息
     * @param blogId
     * @return
     */
    List<Map<String, Object>> getBlogIsTagsInfo(Long blogId);

    /**
     * 更新博客访问量
     * @param blogId
     * @return
     */
    Integer updateBlogViews(Long blogId);


    /**
     * 根据博客id获取上下翻页信息
     * @param blogId
     * @return
     */
    Map<String, Object> getBogPageChange(Long blogId);


}
